Я хочу видалити гілку як локально, так і віддалено. Невдалі спроби видалити віддалену гілку $ git branch -d remotes / origin / bugfix помилка: гілка 'віддаленого / походження / виправлення помилок' не знайдена. $ git branch -d origin / виправлення помилка: гілка 'origin / виправлення помилок' не знайдена. $ git branch -rd origin / виправлення Видалено віддалене джерело походження / виправлення (було 2a14ef7). $ git push Все сучасне $ git pull З github.com: gituser/gitproject * [нова гілка] виправлення -> походження / виправлення Вже сучасний. Що робити, щоб успішно видалити гілку віддаленого / походження / виправлення як локально, так і віддалено?
2020-12-07 13:13:28
1 2 Далі Резюме $ git push -d <ім'я віддаленого> <ім'я_галузі> $ гітка -d гілка -d <ім'я_галузі> Зверніть увагу, що в більшості випадків віддалене ім’я - це походження. У такому випадку вам доведеться використовувати команду приблизно так. $ git push -d origin <ім'я_гілки> Видалити місцеве відділення Для видалення локальної гілки використовуйте одне з наступного: $ git-галузь -d ім'я_відгалуження $ git branch -D ім'я_відгалуження Примітка: Параметр -d є псевдонімом для --delete, який видаляє гілку лише в тому випадку, якщо вона вже була повністю об’єднана в гілці вище за течією. Ви також можете використовувати -D, що є псевдонімом для --delete --force, який видаляє гілку "незалежно від її об'єднаного статусу". [Джерело: man git-branch] Також зауважте, що git branch -d branch_name не буде працювати, якщо ви зараз у гілці, яку потрібно видалити. Повідомлення починається з помилка: Не вдається видалити гілку "ім'я_відгалуження". Якщо так, спочатку переключіться до іншої гілки, наприклад: git checkout master. Видалити віддалену гілку [Оновлено 8 вересня 2017 р.] Починаючи з Git v1.7.0, ви можете видалити віддалену гілку за допомогою $ git push <ім'я_віддаленого> - видалити <ім'я_галузі> що може бути легше запам'ятати, ніж $ git push <ім'я віддаленого>: <ім'я гілки> який був доданий у Git v1.5.0 "для видалення віддаленої гілки або тегу." Починаючи з Git v2.8.0, ви також можете використовувати git push з опцією -d як псевдонім для --delete. Тому версія Git, яку ви встановили, буде визначати, чи потрібно вам використовувати простіший або складніший синтаксис. Видалити віддалене відділення [Оригінальна відповідь від 5 січня 2010 р.] З глави 3 Pro Git Скотта Чейкона: Видалення віддалених гілок Припустимо, ви закінчили з віддаленою гілкою - скажімо, ви та ваші співавтори закінчили функцію та об’єднали її у головну гілку віддаленого управління (або будь-яку гілку, в якій знаходиться ваш стабільний кодовий рядок). Ви можете видалити віддалену гілку, використовуючи досить тупий синтаксис git push [віддалене ім'я]: [гілка]. Якщо ви хочете видалити свою гілку виправлення сервера з сервера, виконайте наступне: $ git push origin: serverfix На адресу git@github.com: schacon / simplegit.git - [видалено] виправлення сервера Бум. Більше немає гілок на вашому сервері. Можливо, ви захочете прослухати цю сторінку, тому що вам знадобиться ця команда, і ви, швидше за все, забудете синтаксис. Спосіб запам'ятати цю команду - згадати синтаксис git push [віддалене ім'я] [localbranch]: [віддалене відділення], про який ми говорили трохи раніше. Якщо ви залишаєте частину [localbranch], то ви в основному говорите: "Не беріть нічого на моєму боці і нехай це буде [remotebranch]". Я видав git push origin: виправлення помилок, і він працював чудово. Скотт Чейкон мав рацію - я хочу захотіти вухати цю сторінку (або практично собаче вухо, відповівши на це у Stack Overflow). Тоді вам слід виконати це на інших машинах # Отримати зміни з усіх пультів дистанційного керування та локально видалити # віддалених видалених гілок / тегів тощо # --prune зробить роботу: -; git fetch --all --prune для поширення змін. | Відповідь Метью чудово підходить для видалення віддалених гілок, і я також вдячний поясненню, але для простої різниці між двома командами: Щоб видалити локальну гілку з машини: git branch -d {the_local_branch} (замість цього використовуйте -D для примусового видалення гілки без перевірки стану злиття) Щоб видалити віддалену гілку з сервера: git push origin --delete {the_remote_branch} Посилання: Git: Видалення гілки (локальної або віддаленої) | Короткі відповіді Якщо ви хочете отримати детальніші пояснення наступних команд, перегляньте довгі відповіді в наступному розділі. Видалення віддаленої гілки git push origin --delete# Git версії 1.7.0 або новішої git push origin -d # Коротша версія (Git 1.7.0 або новіша) git push origin: # Версії Git, старші за 1.7.0 Видалення локальної гілки git branch --delete git branch -d # Коротша версія git branch -D # Примусово видалити незлиті гілки Видалення локальної гілки віддаленого відстеження git branch --delete --remotes / git branch -dr / # Коротше git fetch --prune # Видалити кілька застарілих гілок віддаленого відстеження git fetch -p # Коротше Довга відповідь: є три різні гілки для видалення! Коли ви маєте справу з видаленням гілок як локально, так і віддалено, майте на увазі, що задіяні три різні гілки: Місцеве відділення X. Гілка віддаленого джерела X. Локальна гілка віддаленого відстеження початок / X, яка відстежує віддалену гілку X. Оригінальний плакат, що використовується: git гілка -rd походження / виправлення Яке лише видалило його локальне віддалене відстеження гілки походження / виправлення, а не власне виправлення віддаленого відгалуження у походженні. Щоб видалити цю справжню віддалену гілку, вам потрібно git push origin --видалити виправлення Додаткові подробиці У наступних розділах описані додаткові подробиці, які слід враховувати при видаленні віддалених гілок та гілок дистанційного відстеження. Натискання на видалення віддалених гілок також видаляє гілки віддаленого відстеження Зверніть увагу, що видалення віддаленої гілки X із командного рядкавикористання git push також видалить локальну гілку віддаленого відстеження origin / X, тому немає необхідності обрізати застарілу гілку віддаленого відстеження за допомогою git fetch --prune або git fetch -p. Однак це не завадило б, якби ви все одно зробили це. Ви можете перевірити, що віддалене відстеження гілки origin / X також було видалено, запустивши наступне: # Перегляд лише гілок дистанційного відстеження git branch - віддаляє git гілка -r # Переглядайте як суворо локальні, так і віддалені стеження гілки git гілка --всі git гілка -a Обрізання застарілої локальної гілки дистанційного відстеження походження гілки / X Якщо ви не видалили свою віддалену гілку X із командного рядка (як вище), тоді ваше локальне сховище все одно міститиме (тепер застаріле) джерело віддаленого відстеження гілки / X. Це може статися, якщо ви видалили віддалену гілку безпосередньо через веб-інтерфейс GitHub, наприклад. Типовий спосіб видалити ці застарілі гілки віддаленого відстеження (починаючи з версії Git 1.6.6) - це просто запустити git fetch за допомогою --prune або коротше -p. Зверніть увагу, що це видаляє всі застарілі локальні гілки дистанційного відстеження для будь-яких віддалених гілок, які більше не існують на пульті дистанційного керування: git fetch походження - чорнослив git fetch origin -p # Коротше Ось відповідна цитата з приміток до випуску 1.6.6 (наголос на моєму): "git fetch" навчився --all та --multipleoptions, для запуску fetch багато сховищ, а також опція --prune для видалення віддаленого відстеження гілки, які стали черствими. Вони роблять "git віддалене оновлення" та "git віддалений чорнослив "менш необхідний (не планується видаляти" віддалений оновлення ", ані" віддалений обріз ", хоча). Альтернатива вищезазначеному автоматичному обрізанню застарілих гілок дистанційного відстеження Крім того, замість того, щоб обрізати застарілі локальні гілки віддаленого відстеження за допомогою git fetch -p, ви можете уникнути додаткових мережевих операцій, просто видаливши гілки вручну із прапорами --remote або -r: git branch --delete --remotes origin / X git branch -dr origin / X # Коротше Дивіться також git-branch (1) Сторінка керівництва. git-fetch (1) Сторінка вручну. Pro Git § 3.5 Git Branching - віддалені гілки. | Кроки для видалення гілки: Для видалення віддаленої гілки: git push origin --delete Для видалення локальної гілки у вас є три способи: 1: гілка git -D <ім'я_галузі> 2: гілка git --delete --force <ім'я_галузі> # Те саме, що і -D 3: гілка git --delete # Помилка при роз'єднанні Поясніть: Добре, просто поясніть, що тут відбувається! Просто виконайте git push origin --delete, щоб видалити лише віддалену гілку, додайте назву гілки в кінці, і це одночасно видалить і відсуне її до віддаленого ... Крім того, git branch -D, який просто видаляє лише локальну гілку! ... -D означає --delete --force, який видалить гілку, навіть якщо вона не об'єднана (примусове видалення), але ви також можете використовувати -d, що означає --delete, що видає помилку, що відповідає стану об'єднання гілки ... Я також створюю зображення нижче, щоб показати кроки: | Ви також можете використовувати наступне, щоб видалити віддалену гілку git push --видалити вихідне виправлення сервера Що робить те саме, що і git push origin: serverfix але це може бути легше запам’ятати. | Порада. Коли ви видаляєте гілки за допомогою git branch -d # Видаляє локальну гілку або git push origin: # Видаляє віддалену гілку видаляються лише посилання. Незважаючи на те, що гілка фактично видалена на пульті дистанційного керування, посилання на неї все ще існують у локальних сховищах членів вашої команди. Це означає, що для інших членів команди видалені гілки все ще видно, коли вони роблять гілку git -a. Щоб вирішити цю проблему, члени вашої команди можуть обрізати видалені гілки за допомогою git віддалений чорнослив <сховище> Це, як правило, Git віддалений чорнослив. | Якщо ви хочете видалити гілку, спочатку перейдіть до гілки, крім гілки, яку потрібно видалити. git checkout other_than_branch_to_be_deleted Видалення локальної гілки: git branch -D branch_to_be_deleted Видалення віддаленої гілки: git push origin --delete branch_to_be_deleted | git гілка -D <ім'я- гілки> git гілка -D -r походження / <ім'я- гілки> git push початок: <ім'я- гілки> | Це просто: Просто запустіть таку команду: Щоб видалити гілку Git як локально, так і віддалено, спочатку видаліть локальну гілку за допомогою цієї команди: приклад git branch -d (Ось приклад - назва гілки.) А після цього видаліть віддалену гілку за допомогою цієї команди: git push origin: приклад | Це дуже просто: Щоб видалити віддалену гілку git push -d початок <ім'я гілки> Або походження git push: <ім'я гілки> Примусово видалити локальну гілку git-галузь -D <ім'я -галузі> | Інший підхід: git push - походження чорносливу ПОПЕРЕДЖЕННЯ: Буде видалено всі віддалені гілки, які не існують локально. Або всебічніше, git push - дзеркало ефективно зробить віддалений сховище схожим на локальну копію сховища (локальні голови, пульти та теги відображаються на віддаленому). | У налаштуваннях Bash я використовую наступне: псевдонім git-shoot = "git pushпоходження --видалити " Тоді ви можете зателефонувати: git-shoot назва гілки | Видалити локально: Щоб видалити локальну гілку, ви можете використовувати: git гілка -d <ім'я_галузі> Щоб примусово видалити гілку, використовуйте -D замість -d. git-галузь -D <ім'я_галузі> Видалити віддалено: Є два варіанти: git push походження: назва гілки git push origin --видалити назву гілки Я б запропонував вам скористатися другим способом, оскільки він є більш інтуїтивним. | З січня 2013 року GitHub включав кнопку Видалити гілку біля кожної гілки на вашій сторінці «Гілки». Відповідна публікація в блозі: Створення та видалення гілок | Якщо ви хочете виконати обидва ці кроки однією командою, ви можете створити для нього псевдонім, додавши нижче до вашого ~ / .gitconfig: [псевдонім] rmbranch = "! f () {git branch -d $ {1} && git push origin --delete $ {1};}; f" Крім того, ви можете додати це до своєї глобальної конфігурації за допомогою командного рядка git config - глобальний псевдонім. rmbranch \ '! f () {git branch -d $ {1} && git push origin --delete $ {1}; }; f ' ПРИМІТКА. Якщо використовувати -d (нижній регістр d), гілка буде видалена, лише якщо вона була об’єднана. Щоб змусити видалення, вам потрібно буде використовувати -D (великі літери D). | Щоб видалити свою гілку локально та віддалено Оформлення замовлення у гілку - git checkout master Видаліть віддалену гілку - git push origin --delete Видаліть свою локальну гілку - git branch --delete | Ви також можете зробити це за допомогою git віддаленого походження чорносливу $ git віддаленого походження чорносливу Походження обрізки URL-адреса: git@example.com/yourrepo.git * [обрізане] походження / деякі гілки Він обрізає та видаляє гілки віддаленого відстеження зі списку git branch -r. | На додаток до інших відповідей, я часто використовую інструмент git_remote_branch. Це додаткова установка, але вона надає вам зручний спосіб взаємодії з віддаленими гілками. У цьому випадку видалити: grb видалити гілку Я виявляю, що також досить часто використовую команди публікації та відстеження. | Команда з одним вкладишем для видалення як локального, так і віддаленого: D = назва гілки; гілка git -D $ D; git push походження: $ D Або додайте псевдонім нижче до вашого ~ / .gitconfig. Використання: git kill-ім'я гілки [псевдонім] kill = "! f () {git branch -D \" $ 1 \ "; git push origin --delete \" $ 1 \ ";}; f" | Видалення гілок Припустимо, що наша робота над гілкою "контакт-форма" виконана, і ми вже інтегрували її в "master". Оскільки він нам більше не потрібен, ми можемо видалити його (локально): $ git branch -d контактна форма А для видалення віддаленої гілки: git push origin --видалити контактну форму | Видалити віддалену гілку git push origin: <ім'я гілки> Видалити локальне відділення git гілка -D <ім'я гілки> Видалити кроки локальної гілки: оплата до іншого відділення видалити локальну гілку | Просто скажіть: git гілка -d <ім'я-гілки> походження git push: <ім'я гілки> | git push origin --delete <Назва гілки> легше запам'ятати, ніж git push походження: branchName | Тепер ви можете це зробити за допомогою програми GitHub Desktop. Після запуску програми Клацніть на проект, що містить гілку Перейдіть до гілки, яку ви хочете видалити У меню "Відділення" виберіть "Скасувати публікацію ...", щоб видалити гілку із серверів GitHub. У меню "Відділення" виберіть "Видалити" ім'я_відгалузки "...", щоб видалити гілку з вашої локальної машини (ТАКО ж машини, на якій ви зараз працюєте) | Локальне видалення - (нормально) git branch -d my_branch Якщо у вашій гілці відбувається перебазування / злиття, але це було зроблено неправильно, це означає, що ви отримаєте помилку, виконується Rebase / Merge, тому в такому випадку ви не зможете видалити свою гілку. Тож вам потрібно вирішити перебазування / злиття. В іншому випадку ви можете зробити примусове видалення, використовуючи, git branch -D my_branch Щоб видалити в пульті дистанційного керування: git push --видалити походження my_branch Ви можете зробити те ж саме, використовуючи: git push origin: my_branch # Легко запам'ятати, обидва зроблять те саме. Графічне зображення: | Це не спрацює, якщо на пульті у вас є тег з тим самим іменем, що і гілка: $ git push origin: філія-або-тег-ім'я помилка: dst refspec ім'я гілки або тегу відповідає декільком. помилка: не вдалося висунути деякі посилання на 'git@github.com: SomeName / some-repo.git' У цьому випадку вам потрібно вказати, що ви хочете видалити гілку, а не тег: git push origin: refs / heads / branch-or-tag-name Аналогічним чином, щоб видалити тег замість гілки, яку ви б використали: git push origin: посилання / теги / назва-гілки або тегу | Багато інших відповідей призведуть до помилок / попереджень. Цей підхід є відносно безглуздим, хоча вам все одно може знадобитися git branch -D branch_to_delete, якщо він, наприклад, не повністю об'єднаний з some_other_branch. git checkout some_other_branch git push origin: branch_to_delete git-галузь -d відділення_видалити Віддалене обрізання не потрібно, якщо ви видалили віддалену гілку. Він використовується лише для отримання найсучасніших пультів дистанційного керування, доступних у сховищі, яке ви відстежуєте. Я спостерігав, що git fetch додаватиме пульти дистанційного керування, а не видаляти їх. Ось приклад того, коли git віддалене походження чорносливу насправді щось зробить: Користувач Aвиконує наведені вище дії. Користувач B запустить такі команди, щоб переглянути найсучасніші віддалені гілки: git fetch git віддаленого походження чорносливу git гілка -r | Мені стало нудно гуглити цю відповідь, тому я застосував подібний підхід до відповіді, який crizCraig розміщував раніше. Я додав у свій профіль Bash наступне: функція gitdelete () { git push origin --видалити $ 1 git гілка -D $ 1 } Потім кожного разу, коли я закінчую з гілкою (об’єднаною в master, наприклад), я запускаю в своєму терміналі наступне: gitdelete my-branch-name ... який потім видаляє my-branch-name з джерела, а також локально. | Перед виконанням git branch --delete переконайтеся, що спочатку визначили, яка саме назва віддаленої гілки, виконавши: git ls-remote Це підкаже, що саме вводити для значення . (гілка чутлива до регістру!) | Використання: git push origin: виправлення # Видаляє віддалену гілку git branch -d виправлення # Потрібно видалити локальну гілку вручну Якщо ви впевнені, що хочете його видалити, запустіть гілка git -D виправлення Тепер для очищення видалених віддалених гілок запустіть git віддаленого походження чорносливу | 1 2 Далі Високоактивне запитання. Заробіть 10 репутації, щоб відповісти на це питання. Вимога про репутацію допомагає захистити це питання від спаму та відсутності відповідей. Не відповідь, яку ви шукаєте? Перегляньте інші запитання, позначені тегом git-control version git-branch git-push git-remote, або задайте власне запитання.